package com.example.bean;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
@PropertySource({"classpath:/configinject/advance_value_inject.properties"})
public class AdvanceValueInject {

    // SpEL：默认值
    @Value("${spelDefault.value:127.0.0.1}")
    private String spelDefault;

    // SpEL：调用字符串Hello World的concat方法
    @Value("#{'Hello World'.concat('!')}")
    private String helloWorld;

    // SpEL: 调用字符串的getBytes方法，然后调用length属性
    @Value("#{'Hello World'.bytes.length}")
    private String helloWorldbytes;

    // SpEL：混合使用
    @Value("#{'${Hello}'.concat('_')}")
    private String hello;

    // SpEL：混合使用
    @Value("#{'${server.name}'.split(',')}")
    private List<String> servers;

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("spelDefault=").append(spelDefault).append("\r\n")
                .append("helloWorld=").append(helloWorld).append("\r\n")
                .append("helloWorldbytes=").append(helloWorldbytes).append("\r\n")
                .append("hello=").append(hello).append("\r\n")
                .append("servers=").append(servers).append("\r\n");
        return sb.toString();
    }
}
